/**
 * 全局日志方法 - 简化版
 * 
 * 使用方式：
 * import { Log } from '../core/logger/LoggerGlobal';
 * 
 * Log.ecs.info('消息');
 * Log.game.debug('调试', { data });
 * Log.resource.warn('警告');
 * Log.error('错误'); // 使用默认分类
 * 
 * @author AI Assistant
 * @date 2025-11-27
 */

import { logger, LogCategory } from './Logger';

/**
 * 分类日志接口
 */
interface ICategoryLogger {
    debug(message: string, data?: any): void;
    info(message: string, data?: any): void;
    warn(message: string, data?: any): void;
    error(message: string, data?: any): void;
}

/**
 * 创建分类日志方法
 */
function createLogger(category: LogCategory): ICategoryLogger {
    return {
        debug: (message: string, data?: any) => logger.debug(category, message, data),
        info: (message: string, data?: any) => logger.info(category, message, data),
        warn: (message: string, data?: any) => logger.warn(category, message, data),
        error: (message: string, data?: any) => logger.error(category, message, data),
    };
}

/**
 * 全局日志对象
 * 
 * 使用示例：
 * ```typescript
 * import { Log } from '../core/logger/LoggerGlobal';
 * 
 * // 按分类使用
 * Log.ecs.info('ECS 系统初始化');
 * Log.game.debug('玩家移动', { x, y });
 * Log.resource.warn('资源加载超时', { url });
 * Log.mvvm.error('ViewModel 创建失败', { error });
 * 
 * // 快捷方法（使用 GENERAL 分类）
 * Log.debug('调试信息');
 * Log.info('常规信息');
 * Log.warn('警告信息');
 * Log.error('错误信息');
 * ```
 */
export const Log = {
    // ========== 分类日志器 ==========
    
    /** ECS 系统日志 */
    ecs: createLogger(LogCategory.ECS),
    
    /** MVVM 架构日志 */
    mvvm: createLogger(LogCategory.MVVM),
    
    /** 资源加载日志 */
    resource: createLogger(LogCategory.RESOURCE),
    
    /** 网络通信日志 */
    network: createLogger(LogCategory.NETWORK),
    
    /** 场景管理日志 */
    scene: createLogger(LogCategory.SCENE),
    
    /** 游戏逻辑日志 */
    game: createLogger(LogCategory.GAME),
    
    /** 性能监控日志 */
    performance: createLogger(LogCategory.PERFORMANCE),
    
    /** UI 界面日志 */
    ui: createLogger(LogCategory.UI),
    
    /** 音频系统日志 */
    audio: createLogger(LogCategory.AUDIO),
    
    /** 物理系统日志 */
    physics: createLogger(LogCategory.PHYSICS),
    
    /** 动画系统日志 */
    animation: createLogger(LogCategory.ANIMATION),
    
    /** 通用日志 */
    general: createLogger(LogCategory.GENERAL),
    
    // ========== 快捷方法（使用 GENERAL 分类）==========
    
    /**
     * 调试日志
     */
    debug: (message: string, data?: any) => logger.debug(LogCategory.GENERAL, message, data),
    
    /**
     * 信息日志
     */
    info: (message: string, data?: any) => logger.info(LogCategory.GENERAL, message, data),
    
    /**
     * 警告日志
     */
    warn: (message: string, data?: any) => logger.warn(LogCategory.GENERAL, message, data),
    
    /**
     * 错误日志
     */
    error: (message: string, data?: any) => logger.error(LogCategory.GENERAL, message, data),
    
    // ========== 样式化日志 ==========
    
    /**
     * 样式化日志（用于特殊强调）
     * 
     * @param message 消息内容
     * @param style 样式名称: 'title' | 'success' | 'highlight' | 'separator' | 'large' | 'medium' | 'small' 或自定义 CSS 字符串
     * @param data 附加数据
     * 
     * @example
     * Log.styled('=== 系统启动 ===', 'title');
     * Log.styled('✅ 加载完成', 'success');
     * Log.styled('⚠️ 重要提示', 'highlight');
     */
    styled: (message: string, style: string, data?: any) => logger.styled(message, style, data),
};

/**
 * 导出类型（用于类型提示）
 */
export type LogType = typeof Log;

